package com.oceansoft.mobile.econsole.modules.jlapi.service;

import com.oceansoft.mobile.econsole.common.constant.ConfigInfo;
import com.oceansoft.mobile.econsole.modules.jlapi.entity.*;
import com.oceansoft.mobile.econsole.modules.movecar.entity.MoveCar;

import java.io.InputStream;
import java.util.List;
import java.util.concurrent.ExecutionException;

/**
 * 大庆所有的api接口查询
 * Created by smc on 2016/2/19.
 */
public interface IJlApiService {


    public void insertInServiceInfo(InQueryServiceInfo inQueryServiceInfo);


    //查询接口
    OutQueryServiceInfo queryOutServiceInfoByCondition(String action,String command);

    List<OutQueryServiceInfo2> queryOutServiceInfoByCondition2(String action,String command);

    OutQueryServiceInfo queryOutServiceInfoByCondition3(String action,String command);
    //查询接口
    public OutQueryServiceInfo queryOutServiceInfo(String action,String comond,String sn);

    public List<OutQueryServiceInfo2> queryOutServiceInfo2(String sn);
    InQueryServiceInfo findInQueryBySN(String sn);

    /**
     * 身份证办理进度
     * 出入境办理进度
     * 办件查询
     * 机动车违法查询
     * 驾驶证记分查询
     * 重名查询************内外网交互
     *
     * @param inQueryServiceInfo
     * @param message
     */
    public void doExecute(InQueryServiceInfo inQueryServiceInfo, ApiMessage message);

    /**
     * 车辆违法查询
     * @param inQueryServiceInfo
     * @return
     * @throws ExecutionException
     * @throws InterruptedException
     */
    public List<OffenseVehicleInfo> doExecutes(InQueryServiceInfo inQueryServiceInfo);

    /**
     * 车辆查询
     * @param inQueryServiceInfo
     * @return
     * @throws ExecutionException
     * @throws InterruptedException
     */
    public Vehicle doExecutes3(InQueryServiceInfo inQueryServiceInfo) throws ExecutionException, InterruptedException;

    /**
     * 驾驶证积分查询
     * @param inQueryServiceInfo
     * @return
     * @throws ExecutionException
     * @throws InterruptedException
     */
    public DriverLicenseInfo doExecutes2(InQueryServiceInfo inQueryServiceInfo) throws ExecutionException, InterruptedException;


    /**
     * 车辆 和驾驶证 是否可以绑定
     * @param inQueryServiceInfo
     * @return
     * @throws ExecutionException
     * @throws InterruptedException
     */
    public Boolean doExecute(InQueryServiceInfo inQueryServiceInfo) throws ExecutionException, InterruptedException;



    /**
     * 堵路移车内外网交互
     *
     * @param inQueryServiceInfo
     * @param message
     */
    void doMoveCarExecute(InQueryServiceInfo inQueryServiceInfo, ApiMessage message, MoveCar moveCar);

    /**
     * 实名认证
     * @param inQueryServiceInfo
     */
    void doSmrz(InQueryServiceInfo inQueryServiceInfo);

    /**
     * 线索举报上传图片/视频
     * 暂时未用、若原方式还不行，则使用此方法
     *
     * @param configInfo
     * @param fileName
     * @param filePath
     * @param in
     */
    void doFtpUploadFile(ConfigInfo configInfo,String fileName,String filePath,InputStream in);
}
